#include "LinearMath/btImplicitQRSVD.h"
#ifdef __cplusplus
extern "C" {
#endif
btMatrix2x2* bullet_NewbtMatrix2x2(){
	btMatrix2x2* wrap_out = new btMatrix2x2();
	return wrap_out;
}

btMatrix2x2* bullet_NewbtMatrix2x21(btMatrix2x2* other){
	btMatrix2x2 const& c_arg_other=(btMatrix2x2 const&)(*other);
	btMatrix2x2* wrap_out = new btMatrix2x2(c_arg_other);
	return wrap_out;
}

double bullet_btMatrix2x2_GetFieldOfM_00(btMatrix2x2* c_this){
	return (double)(c_this->m_00);
}

double bullet_btMatrix2x2_GetFieldOfM_01(btMatrix2x2* c_this){
	return (double)(c_this->m_01);
}

double bullet_btMatrix2x2_GetFieldOfM_10(btMatrix2x2* c_this){
	return (double)(c_this->m_10);
}

double bullet_btMatrix2x2_GetFieldOfM_11(btMatrix2x2* c_this){
	return (double)(c_this->m_11);
}

void bullet_btMatrix2x2_setIdentity(btMatrix2x2* c_this){
	c_this->setIdentity();
}

GivensRotation* bullet_NewGivensRotation(int rowi_in,int rowk_in){
	int c_arg_rowi_in=rowi_in;
	int c_arg_rowk_in=rowk_in;
	GivensRotation* wrap_out = new GivensRotation(c_arg_rowi_in,c_arg_rowk_in);
	return wrap_out;
}

GivensRotation* bullet_NewGivensRotation1(double a,double b,int rowi_in,int rowk_in){
	btScalar c_arg_a=a;
	btScalar c_arg_b=b;
	int c_arg_rowi_in=rowi_in;
	int c_arg_rowk_in=rowk_in;
	GivensRotation* wrap_out = new GivensRotation(c_arg_a,c_arg_b,c_arg_rowi_in,c_arg_rowk_in);
	return wrap_out;
}

void bullet_GivensRotation_columnRotation(GivensRotation* c_this,btMatrix3x3* A){
	btMatrix3x3& c_arg_A=(btMatrix3x3&)(*A);
	c_this->columnRotation(c_arg_A);
}

void bullet_GivensRotation_columnRotation1(GivensRotation* c_this,btMatrix2x2* A){
	btMatrix2x2& c_arg_A=(btMatrix2x2&)(*A);
	c_this->columnRotation(c_arg_A);
}

void bullet_GivensRotation_compute(GivensRotation* c_this,double a,double b){
	btScalar const c_arg_a=a;
	btScalar const c_arg_b=b;
	c_this->compute(c_arg_a,c_arg_b);
}

void bullet_GivensRotation_computeUnconventional(GivensRotation* c_this,double a,double b){
	btScalar const c_arg_a=a;
	btScalar const c_arg_b=b;
	c_this->computeUnconventional(c_arg_a,c_arg_b);
}

void bullet_GivensRotation_fill(GivensRotation* c_this,btMatrix3x3* R){
	btMatrix3x3 const& c_arg_R=(btMatrix3x3 const&)(*R);
	c_this->fill(c_arg_R);
}

void bullet_GivensRotation_fill1(GivensRotation* c_this,btMatrix2x2* R){
	btMatrix2x2 const& c_arg_R=(btMatrix2x2 const&)(*R);
	c_this->fill(c_arg_R);
}

double bullet_GivensRotation_GetFieldOfC(GivensRotation* c_this){
	return (double)(c_this->c);
}

int bullet_GivensRotation_GetFieldOfRowi(GivensRotation* c_this){
	return (int)(c_this->rowi);
}

int bullet_GivensRotation_GetFieldOfRowk(GivensRotation* c_this){
	return (int)(c_this->rowk);
}

double bullet_GivensRotation_GetFieldOfS(GivensRotation* c_this){
	return (double)(c_this->s);
}

void bullet_GivensRotation_rowRotation(GivensRotation* c_this,btMatrix3x3* A){
	btMatrix3x3& c_arg_A=(btMatrix3x3&)(*A);
	c_this->rowRotation(c_arg_A);
}

void bullet_GivensRotation_rowRotation1(GivensRotation* c_this,btMatrix2x2* A){
	btMatrix2x2& c_arg_A=(btMatrix2x2&)(*A);
	c_this->rowRotation(c_arg_A);
}

void bullet_GivensRotation_transposeInPlace(GivensRotation* c_this){
	c_this->transposeInPlace();
}

#ifdef __cplusplus
}
#endif
